/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package generationgraphe;

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.TableColumn;

/**
 *
 * @author mazid
 */
public class Table extends Observable{
    
    private List<Object> plageSelections = new ArrayList<>(); 
    
    private ModelTable model = new ModelTable();
    private static final Table instance = new Table();
    private JTable feuille;

    public static Table getInstance() {
        return instance;
    }
    public Table(){
        
    }
    public JTabbedPane getTable(){ 
        JTabbedPane tab = new JTabbedPane();
        feuille = new JTable();
        feuille.setModel(model);
       
        feuille.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        feuille.setRowSelectionAllowed(true);
        feuille.setColumnSelectionAllowed(true);
        feuille.setRowHeight(20);
        feuille.setAutoResizeMode(0);
        modelInit();
        tab.addTab("Tab1", new JScrollPane(feuille));
        return tab;
    }
    
    // fonction pour initialiser la table
    private void modelInit () {
        TableColumn column =feuille.getColumnModel().getColumn(0);
        column.setPreferredWidth(40);
        column.setCellRenderer(feuille.getTableHeader().getDefaultRenderer());
        for (int i = 1 ; i < feuille.getModel().getColumnCount() ; i++) {
            column = feuille.getColumnModel().getColumn(i);
            column.setPreferredWidth(60);
            column.setResizable(true);
        }
    }
    // pour les les lignes selectionnées
    public int[] getSelectionRows(){
        return feuille.getSelectedRows();
    }
    // pour les colonnes selectionnées
    public int[] getSelectionCol(){
        return feuille.getSelectedColumns();
    }
    // pour les cellules selectionnnées
    public List<Object> getSeleted(){
        plageSelections.clear();
        Object object;
        int row = feuille.getSelectedRow();
        int col = feuille.getSelectedColumn();
        int[] rows = feuille.getSelectedRows();
        int[] columns = feuille.getSelectedColumns();
        for(int i=0; i<rows.length; i++){
            
            if((object = feuille.getValueAt(row, col))!=null){
                 plageSelections.add(object);
            }
            
            row++;
        }
        return plageSelections;
    }
    // parcour toute la feuille ?????
    public List getCellSelected(){
        plageSelections.clear();
        for(int row = 0; row<feuille.getRowCount(); row++){
            for(int col = 0; col<feuille.getColumnCount(); col++){
                if(feuille.isCellSelected(row, col)&&feuille.isCellEditable(row, col)){
                    if(feuille.getValueAt(row, col)!=null){
                        Object valeur=feuille.getValueAt(row, col);
                        plageSelections.add(valeur);
                    }
                }  
            }
        }
        return plageSelections;
    }
    
}
